﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Odense_Kommune.Controller
{
    /// <summary>
    /// Lavet af Mads (og Tien), DM121
    /// </summary>
    public static class Validering
    {
        #region Email
        /// <summary>
        /// Validere en string der indeholder en e-mail.
        /// </summary>
        /// <param name="email">Emailen.</param>
        /// <returns><c>true</c> hvis der intet mellemrum findes; ellers <c>false</c>.</returns>
        public static bool Email(string email)
        {
            string[] testEmail = email.Split(' ');

            if (testEmail.Count() > 1)
                return false;
            return true;
        }

        /// <summary>
        /// Fjerner mellemrum i en email
        /// </summary>
        /// <param name="email"></param>
        /// <returns></returns>
        public static string ValiderEmail(string email) { return email.Replace(" ", ""); }
        #endregion

        #region CPR
        /// <summary>
        /// Validere et CPR-nummer.
        /// </summary>
        /// <param name="cpr">CPR-nummer.</param>
        /// <returns><c>true</c> hvis det er et valid CPR-nummer med eller uden bindestreg; ellers <c>false</c> hvis den indeholder bogstaver, specialtegn eller er over 11 tegn eller under 10.</returns>
        public static bool Cpr(string cpr)
        {
            if (cpr.Length == 11)
            {
                string cprFix = "";
                string[] cprSplit = cpr.Split('-');

                foreach (string split in cprSplit)
                {
                    cprFix += split;
                }

                foreach (char c in cprFix)
                {
                    if (!char.IsDigit(c))
                        return false;
                }
                return true;
            }
            else if (cpr.Length <= 10)
            {
                foreach (char c in cpr)
                {
                    if (!char.IsDigit(c))
                        return false;
                }
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// Fjerner alle tegn undtagen tal
        /// </summary>
        /// <param name="cpr"></param>
        /// <returns></returns>
        public static string ValiderCpr(string cpr)
        {
            string tempCpr = "";

            foreach (char c in cpr)
            {
                if (char.IsDigit(c))
                    tempCpr += c;
            }

            return tempCpr;
        }
        #endregion

        #region Tal
        /// <summary>
        /// Validere en string der indeholdere tal.
        /// </summary>
        /// <param name="tal">Tallet der testes for bogstaver eller specialtegn.</param>
        /// <returns><c>true</c> hvis der ikke findes bogstaver eller specialtegn; ellers <c>false</c>.</returns>
        public static bool Tal(string tal)
        {
            foreach (char c in tal)
            {
                if (!char.IsDigit(c))
                    return false;
            }
            return true;
        }

        /// <summary>
        /// Fjerne alle tegn undtagen tal i en string
        /// </summary>
        /// <param name="tal"></param>
        /// <returns></returns>
        public static string ValiderTal(string tal) { return ValiderCpr(tal); }
        #endregion

        #region Bogstaver
        /// <summary>
        /// Validere bogstaver i en string.
        /// </summary>
        /// <param name="bogstaver">Bogstaver.</param>
        /// <returns><c>true</c> hvis der ikke findes tal eller specialtegn; ellers <c>false</c>.</returns>
        public static bool Bogstaver(string bogstaver)
        {
            foreach (char c in bogstaver)
            {
                if (!char.IsLetter(c))
                    return false;
            }
            return true;
        }
        #endregion
    }
}
